#include <iostream>
using namespace std;


//// 1、final：修饰虚函数，表示该虚函数不能再被重写
//class Car
//{
//public:
//	virtual void Drive() final {}
//};
//class Benz :public Car
//{
//public:
//	virtual void Drive() { cout << "Benz-舒适" << endl; }
//};





////2. override : 检查派生类虚函数是否重写了基类某个虚函数，如果没有重写编译报错。
//class Car1 {
//public:
//	virtual void Drive() {}
//};
//class Benz :public Car1 {
//public:
//	virtual void Drive() override { cout << "Benz-舒适" << endl; }
//};



//私有化也可以达到final同样效果
class A{
public:
	/*A Create() {
		return A();
	}*/
	// 弄成静态就可以解决构造函数私有化问题
	static A Create() {
		return A();
	}

private:
	A()
	{}
};

class B:public A
{};


int main()
{
	//A aa;
	
	A::Create();

	return 0;
}